ExtJS একটি শক্তিশালী ফ্রন্টএন্ড ফ্রেমওয়ার্ক যা ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করার জন্য একটি ইভেন্ট-চালিত মডেল প্রদান করে। ExtJS এর ইভেন্ট ম্যানেজমেন্ট ব্যবস্থাটি সিস্টেমটিকে অত্যন্ত ইন্টারঅ্যাকটিভ এবং ডাইনামিক করে তোলে। ব্যবহারকারীর ইন্টারঅ্যাকশন বা ইভেন্টগুলোর উপর ভিত্তি করে অ্যাপ্লিকেশন এর আচরণ নিয়ন্ত্রণ করা হয়।
ExtJS এ ইভেন্ট ম্যানেজমেন্টের জন্য কয়েকটি মূল ধারণা রয়েছে:
ExtJS এ ইভেন্ট হ্যান্ডলিং সাধারণত দুটি প্রধান উপায়ে করা হয়:
ডিরেক্ট ইভেন্ট হ্যান্ডলিংয়ে, প্রতিটি কম্পোনেন্টের সাথে এক বা একাধিক ইভেন্ট লিসেনার যুক্ত করা হয়। যেমন, বাটনে ক্লিক ইভেন্ট হ্যান্ডল করার জন্য:
উদাহরণ:
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(),
handler: function() {
Ext.Msg.alert('Button Clicked', 'You clicked the button!');
}
});
এখানে, handler
কনফিগারেশন প্রপার্টি ব্যবহার করে বাটন ক্লিকের জন্য একটি ফাংশন সংযুক্ত করা হয়েছে। যখন ব্যবহারকারী বাটনে ক্লিক করবে, তখন একটি মেসেজ আলার্ট প্রদর্শিত হবে।
ডেলিগেটেড ইভেন্ট হ্যান্ডলিংয়ে, মূল কম্পোনেন্টের উপর ইভেন্ট লিসেনার যোগ করা হয় এবং এটি তার চাইল্ড এলিমেন্টগুলোর ইভেন্টগুলি হ্যান্ডল করতে পারে।
উদাহরণ:
Ext.create('Ext.Panel', {
title: 'Panel with Button',
renderTo: Ext.getBody(),
items: [
{
xtype: 'button',
text: 'Click Me',
itemId: 'clickButton'
}
],
listeners: {
afterrender: function(panel) {
panel.down('#clickButton').on('click', function() {
Ext.Msg.alert('Button Clicked', 'The button inside the panel was clicked!');
});
}
}
});
এখানে listeners
কনফিগারেশন ব্যবহার করে প্যানেলের ইভেন্ট ম্যানেজমেন্ট করা হয়েছে এবং প্যানেলের মধ্যে একটি বাটনের ক্লিক ইভেন্ট হ্যান্ডল করা হয়েছে।
ExtJS বিভিন্ন ধরনের ইভেন্ট প্রদান করে, যেমন:
click
, dblclick
, mouseover
, mouseout
keydown
, keyup
, keypress
change
, submit
resize
, close
focus
, blur
, load
, error
ExtJS এ ইভেন্ট লিসেনার সেট করা বিভিন্ন উপায়ে করা যায়, যেমন:
addListener
: একটি কম্পোনেন্ট বা DOM এলিমেন্টে ইভেন্ট লিসেনার যোগ করা।removeListener
: একটি ইভেন্ট লিসেনার মুছে ফেলা।on
: ক্লাস, স্টোর, গ্রিড, বা কম্পোনেন্টের জন্য ইভেন্ট সংযুক্ত করা।উদাহরণ:
var button = Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody()
});
// addListener ব্যবহার
button.addListener('click', function() {
Ext.Msg.alert('Button Clicked', 'You clicked the button using addListener!');
});
// on ব্যবহার
button.on('click', function() {
Ext.Msg.alert('Button Clicked', 'You clicked the button using on!');
});
ExtJS এর ইভেন্ট ম্যানেজমেন্ট সিস্টেম ইভেন্ট প্রপাগেশন এবং বুবলিং (bubbling) এর জন্য সমর্থন প্রদান করে। ইভেন্ট প্রপাগেশন নিয়ন্ত্রণ করা যায় stopEvent
এবং stopPropagation
এর মাধ্যমে।
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(),
listeners: {
click: function(event) {
event.stopEvent(); // ইভেন্ট প্রপাগেশন বন্ধ
Ext.Msg.alert('Button Clicked', 'Event propagation stopped!');
}
}
});
এখানে, stopEvent()
মেথডটি ব্যবহার করে ইভেন্ট প্রপাগেশন বন্ধ করা হয়েছে, অর্থাৎ ইভেন্টটি বুবলিং করতে পারবে না।
একটি প্যানেল বা গ্রিডের ইভেন্ট হ্যান্ডল করার জন্য, আপনি ইভেন্ট ডেলিগেশন ব্যবহার করতে পারেন, যার মাধ্যমে প্যানেল বা গ্রিডের সাব-কম্পোনেন্টগুলোর ইভেন্টগুলোও পরিচালনা করা যায়।
উদাহরণ:
Ext.create('Ext.Panel', {
title: 'Panel with Button',
renderTo: Ext.getBody(),
items: [
{
xtype: 'button',
text: 'Click Me',
itemId: 'clickButton'
}
],
listeners: {
afterrender: function(panel) {
panel.el.on('click', function(event, target) {
if (Ext.get(target).is('button')) {
Ext.Msg.alert('Button Clicked', 'A button was clicked!');
}
});
}
}
});
এখানে, panel.el.on('click')
ব্যবহার করে প্যানেলের সাব-কম্পোনেন্টের ক্লিক ইভেন্ট হ্যান্ডল করা হচ্ছে।
handler
এবং listeners
এর মাধ্যমে ইভেন্ট হ্যান্ডলিং করা হয়।stopEvent()
এবং stopPropagation()
ব্যবহার করে ইভেন্ট প্রপাগেশন বন্ধ করা যায়।এভাবে, ExtJS ইভেন্ট ম্যানেজমেন্ট সিস্টেম আপনাকে কার্যকরী ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে সহায়ক এবং এটি অ্যাপ্লিকেশনের পারফরম্যান্স এবং ইউজার এক্সপিরিয়েন্স উন্নত করতে সাহায্য করে।
Events (ইভেন্টস) হল ইউজার ইন্টারঅ্যাকশনের প্রতি অ্যাপ্লিকেশন প্রতিক্রিয়া জানানোর পদ্ধতি। ExtJS একটি ইভেন্ট-ড্রিভেন ফ্রেমওয়ার্ক, যেখানে বিভিন্ন ইভেন্ট নির্দিষ্ট কম্পোনেন্ট বা UI উপাদানগুলোর সাথে সম্পর্কিত থাকে। যেমন: বাটন ক্লিক করা, ফর্ম সাবমিট করা, মাউসের হোভার করা ইত্যাদি। ExtJS এর ইভেন্ট সিস্টেম আপনাকে এই ধরনের ইউজার ইন্টারঅ্যাকশন সহজেই হ্যান্ডেল করতে সাহায্য করে।
ইভেন্টস হল ইউজারের অ্যাপ্লিকেশন সঙ্গে ইন্টারঅ্যাকশন করার কাজগুলো, যেমন ক্লিক, হোভার, কীবোর্ড ইনপুট, ড্র্যাগ-এন্ড-ড্রপ ইত্যাদি। এই ধরনের ইভেন্ট গুলি সাধারণত ইউজারের একটি অ্যাকশন (যেমন, বাটন ক্লিক, মাউসের হোভার) বা সিস্টেমের পরিবর্তনের মাধ্যমে তৈরি হয়। ExtJS এই ইভেন্টগুলিকে ইভেন্ট হ্যান্ডলার বা ইভেন্ট লিসেনার এর মাধ্যমে হ্যান্ডল করতে সহায়ক করে।
ExtJS তে ইভেন্ট হ্যান্ডল করার দুটি প্রধান পদ্ধতি রয়েছে:
listeners
কনফিগারেশন:listeners
কনফিগারেশন ব্যবহার করে ইভেন্ট হ্যান্ডল করা যায়। এটি ইভেন্টগুলোকে ম্যানেজ করার জন্য সাধারণত ব্যবহার করা হয়।addListener
মেথড:addListener
মেথড ব্যবহার করে ইভেন্টের জন্য লিসেনার যোগ করা যায়।listeners
কনফিগারেশনlisteners
কনফিগারেশন একটি কম্পোনেন্টের জন্য বিভিন্ন ইভেন্ট হ্যান্ডল করার সহজ পদ্ধতি। এটি সাধারণত কম্পোনেন্টের কনফিগারেশনের অংশ হিসেবে ব্যবহৃত হয়।
উদাহরণ:
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(),
listeners: {
click: function() {
alert('Button clicked!');
}
}
});
এখানে, click
ইভেন্টটি হ্যান্ডল করা হয়েছে। যখন বাটনে ক্লিক করা হবে, তখন একটি এলার্ট দেখানো হবে।
addListener
মেথডaddListener
মেথড ব্যবহার করে নির্দিষ্ট ইভেন্টে লিসেনার যোগ করা হয়। এটি আপনাকে কোডের যেকোনো স্থানে ইভেন্ট হ্যান্ডল করার সুবিধা দেয়।
উদাহরণ:
var button = Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody()
});
button.addListener('click', function() {
alert('Button clicked using addListener!');
});
এখানে, addListener
মেথড ব্যবহার করে click
ইভেন্ট হ্যান্ডল করা হয়েছে।
click
:
বাটন, ট্যাব, অথবা যেকোনো কম্পোনেন্টে ক্লিক করার ইভেন্ট।
উদাহরণ:
listeners: {
click: function() {
alert('Button clicked!');
}
}
change
:
ফর্ম ফিল্ডের মান পরিবর্তিত হলে ইভেন্ট।
উদাহরণ:
listeners: {
change: function(field, newValue, oldValue) {
console.log('Field value changed from ' + oldValue + ' to ' + newValue);
}
}
mouseover
:
মাউস একটি কম্পোনেন্টের উপর গেলে ইভেন্ট।
উদাহরণ:
listeners: {
mouseover: function() {
console.log('Mouse is over the element');
}
}
keydown
এবং keyup
:
কীবোর্ডে চাপ দেওয়া বা ছেড়ে দেওয়া ইভেন্ট।
উদাহরণ:
listeners: {
keydown: function(field, e) {
console.log('Key pressed: ' + e.getKey());
}
}
প্রতিটি ইভেন্টের সাথে কিছু গুরুত্বপূর্ণ প্যারামিটার পাওয়া যায়:
e
: ইভেন্ট অবজেক্ট যা ইভেন্ট সম্পর্কিত তথ্য ধারণ করে (যেমন মাউস পজিশন, কী কোড ইত্যাদি)।target
: যে এলিমেন্টে ইভেন্ট ঘটেছে।type
: ইভেন্টের ধরন (যেমন click
, keydown
ইত্যাদি)।ইভেন্ট ডেলিগেশন হল একাধিক এলিমেন্টে একই ইভেন্ট হ্যান্ডল করার একটি পদ্ধতি। এটি সাধারণত ডাইনামিক কম্পোনেন্টের জন্য ব্যবহৃত হয়, যেখানে আপনি একটি প্যারেন্ট কম্পোনেন্টে ইভেন্ট হ্যান্ডলার যুক্ত করেন এবং ইভেন্টটি তার মধ্যে থাকা চাইল্ড এলিমেন্টগুলির উপর প্রয়োগ হয়।
উদাহরণ:
Ext.create('Ext.panel.Panel', {
title: 'Event Delegation Example',
renderTo: Ext.getBody(),
html: '<button class="my-btn">Click Me</button>',
listeners: {
click: function(e, target) {
if (target.className === 'my-btn') {
alert('Button clicked inside panel');
}
}
}
});
এখানে, প্যানেলটির মধ্যে থাকা বাটন ক্লিক করার জন্য ইভেন্ট ডেলিগেশন ব্যবহার করা হয়েছে।
listeners
কনফিগারেশন এবং addListener
মেথড ব্যবহৃত হয়।এটি ExtJS অ্যাপ্লিকেশন ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ অংশ, যা ইউজারের ইন্টারঅ্যাকশন এর উপর ভিত্তি করে অ্যাপ্লিকেশন প্রতিক্রিয়া জানায়।
ExtJS এ Event Listeners এবং Handlers ব্যবহৃত হয় ইউজার ইন্টারঅ্যাকশনে (যেমন: ক্লিক, হোভার, কীবোর্ড ইনপুট ইত্যাদি) রেসপন্স জানাতে। এক্সটিজেএস একটি শক্তিশালী ইভেন্ট সিস্টেম সরবরাহ করে, যা ডেভেলপারদের তাদের অ্যাপ্লিকেশনে ইন্টারঅ্যাকশনের জন্য সহজে ইভেন্ট লিসেনার এবং হ্যান্ডলার কনফিগার করতে দেয়।
Event Listener হলো এমন একটি ফাংশন বা মেথড যা নির্দিষ্ট একটি ইভেন্টের জন্য অপেক্ষা করে এবং সেই ইভেন্টটি ঘটলে এটি ট্রিগার হয়। ExtJS এ, event listeners সাধারণত কম্পোনেন্টে যোগ করা হয়, যেমন বাটন ক্লিক, মাউস মুভ, বা ফর্ম সাবমিটের জন্য।
একটি কম্পোনেন্টের জন্য ইভেন্ট লিসেনার কনফিগার করতে, আপনি listeners
কনফিগারেশন ব্যবহার করতে পারেন, যা কম্পোনেন্টের নির্দিষ্ট ইভেন্টের জন্য ফাংশন নির্ধারণ করে।
উদাহরণ:
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(),
listeners: {
click: function() {
alert('Button clicked!');
}
}
});
এখানে, click
ইভেন্টের জন্য একটি লিসেনার কনফিগার করা হয়েছে যা বাটনে ক্লিক করলে একটি অ্যালার্ট বক্স প্রদর্শন করবে।
Event Handler হল একটি ফাংশন যা একটি ইভেন্ট ঘটলে তার সাথে সম্পর্কিত কোনো কাজ সম্পন্ন করতে ব্যবহৃত হয়। ExtJS এ, আপনি ইভেন্ট হ্যান্ডলার কনফিগার করে তার ভিতরে যে কোডটি চালাতে চান তা লিখতে পারেন।
handler
কনফিগারেশন ব্যবহার করে আপনি ইভেন্ট হ্যান্ডলার ফাংশন নির্ধারণ করতে পারেন, যা কম্পোনেন্টে ইভেন্ট ঘটলে চালিত হয়।
উদাহরণ:
Ext.create('Ext.Button', {
text: 'Submit',
renderTo: Ext.getBody(),
handler: function() {
alert('Submit button clicked!');
}
});
এখানে, handler
কনফিগারেশন দ্বারা Submit
বাটনের জন্য একটি ইভেন্ট হ্যান্ডলার তৈরি করা হয়েছে, যা বাটনে ক্লিক করলে অ্যালার্ট দেখাবে।
click
, mouseover
, dblclick
ইত্যাদি)।একটি কম্পোনেন্টে একাধিক ইভেন্ট লিসেনার কনফিগার করতে, আপনি listeners
অবজেক্টে একাধিক ইভেন্ট হ্যান্ডলিং ফাংশন যোগ করতে পারেন।
উদাহরণ:
Ext.create('Ext.Button', {
text: 'Click or Hover',
renderTo: Ext.getBody(),
listeners: {
click: function() {
alert('Button clicked!');
},
mouseover: function() {
this.setText('Mouse Over'); // বাটনের লেখা পরিবর্তন
},
mouseout: function() {
this.setText('Click or Hover'); // আবার বাটনের লেখা আগের মতো
}
}
});
এখানে, click
, mouseover
, এবং mouseout
ইভেন্টগুলোর জন্য আলাদা আলাদা লিসেনার কনফিগার করা হয়েছে।
ইভেন্ট লিসেনার এবং হ্যান্ডলার ফাংশনের মধ্যে একটি event
অবজেক্ট পাঠানো হয় যা ইভেন্টের সকল তথ্য ধারণ করে, যেমন ইভেন্টের ধরন, টার্গেট এলিমেন্ট, এবং অন্যান্য প্রাসঙ্গিক তথ্য। এই অবজেক্টটি ইভেন্টের সাথে সম্পর্কিত মেটাডেটা সরবরাহ করে।
উদাহরণ:
Ext.create('Ext.Button', {
text: 'Click Me',
renderTo: Ext.getBody(),
listeners: {
click: function(event) {
console.log('Event Target:', event.target); // ক্লিক করা এলিমেন্ট দেখাবে
}
}
});
এখানে, event.target
ব্যবহার করে ক্লিক করা এলিমেন্টের তথ্য লগ করা হয়েছে।
ExtJS এ, কিছু ইভেন্ট বাবা-মা কম্পোনেন্টের দিকে "বাবল" (propagate) করে। একে event bubbling বলা হয়। বাবা কম্পোনেন্টে ইভেন্টটি শ্রবণ করার জন্য, আপনি delegate
কনফিগারেশন ব্যবহার করতে পারেন। এটি বিশেষভাবে দরকারি যখন আপনি DOM এর বিভিন্ন স্তরে একই ইভেন্ট হ্যান্ডল করতে চান।
উদাহরণ:
Ext.create('Ext.panel.Panel', {
title: 'Click Event on Panel',
width: 200,
height: 200,
renderTo: Ext.getBody(),
listeners: {
click: {
fn: function() {
alert('Panel clicked!');
},
delegate: '.x-panel-header' // শুধুমাত্র প্যানেলের হেডারে ক্লিক করলে ট্রিগার হবে
}
}
});
এখানে, click
ইভেন্টটি .x-panel-header
এর উপর বাবল হবে এবং প্যানেলের হেডারে ক্লিক করলে ইভেন্টটি ট্রিগার হবে।
এই ইভেন্ট সিস্টেমগুলি এক্সটিজেএস অ্যাপ্লিকেশনে ইউজার ইন্টারঅ্যাকশন সহজে পরিচালনা করতে সাহায্য করে।
ExtJS তে কাস্টম ইভেন্ট (Custom Event) তৈরি করার মাধ্যমে আপনি কাস্টম আচরণ বা ইভেন্ট হ্যান্ডলিং যুক্ত করতে পারেন যা ডিফল্ট ইভেন্টগুলির বাইরেও কাজ করে। কাস্টম ইভেন্টগুলি ভিউ কম্পোনেন্টের ইন্টারঅ্যাকশনের উপর ভিত্তি করে চলতে পারে এবং অ্যাপ্লিকেশনের মধ্যে ইভেন্টের সমন্বয় ঘটাতে সহায়ক।
কাস্টম ইভেন্টগুলি হলো ইউজার ইন্টারঅ্যাকশনের মাধ্যমে বা কোডের মাধ্যমে ট্রিগার হওয়া ইভেন্ট যা আপনি নিজে তৈরি করেন। এগুলি সাধারণত একটি কম্পোনেন্টের মধ্যে বিশেষ পরিস্থিতি মোকাবেলা করার জন্য ব্যবহার করা হয়।
এখানে কাস্টম ইভেন্ট তৈরি করার প্রক্রিয়া এবং তার ব্যবহার দেখানো হয়েছে।
Ext.Component
ক্লাস বা এর সাবক্লাসে ইভেন্ট ডিফাইন করা যায়।fireEvent
মেথড ব্যবহার করে কাস্টম ইভেন্টটি ট্রিগার করতে হবে।ধরা যাক, আমরা একটি UserPanel
কম্পোনেন্ট তৈরি করছি, যা একটি কাস্টম ইভেন্ট userLoggedIn
ট্রিগার করবে যখন ব্যবহারকারী লগইন করবে। এই ইভেন্টটি সঠিকভাবে হ্যান্ডল করার জন্য একটি লিসেনার তৈরি করা হবে।
Ext.define('MyApp.view.UserPanel', {
extend: 'Ext.panel.Panel',
xtype: 'userpanel',
title: 'User Panel',
// কাস্টম ইভেন্ট ডিফাইন করা
fireLoginEvent: function(userName) {
this.fireEvent('userLoggedIn', userName); // কাস্টম ইভেন্ট ট্রিগার করা
}
});
এখানে, fireLoginEvent
মেথডটি userLoggedIn
নামে একটি কাস্টম ইভেন্ট ট্রিগার করবে এবং এতে ব্যবহারকারীর নাম প্যারামিটার হিসেবে পাঠানো হবে।
Ext.application({
name: 'MyApp',
launch: function() {
var userPanel = Ext.create('MyApp.view.UserPanel', {
renderTo: Ext.getBody()
});
// কাস্টম ইভেন্ট 'userLoggedIn' হ্যান্ডল করা
userPanel.on('userLoggedIn', function(userName) {
Ext.Msg.alert('Login Success', userName + ' logged in successfully!');
});
// কাস্টম ইভেন্ট ট্রিগার করা
userPanel.fireLoginEvent('John Doe');
}
});
এখানে, যখন fireLoginEvent
মেথডটি কল করা হবে, তখন কাস্টম ইভেন্ট userLoggedIn
ট্রিগার হবে। এরপর, সেই ইভেন্টটি হ্যান্ডল করার জন্য on
মেথডের মাধ্যমে একটি ইভেন্ট লিসেনার যোগ করা হয়েছে, যা একটি Msg.alert
প্রদর্শন করবে।
fireEvent
যখন একটি নির্দিষ্ট পরিস্থিতি ঘটবে, তখন আপনি fireEvent
মেথড ব্যবহার করে কাস্টম ইভেন্টটি ট্রিগার করতে পারবেন।
this.fireEvent('userLoggedIn', userName);
এটি userLoggedIn
ইভেন্টটি ট্রিগার করবে এবং যে কোনও হ্যান্ডলার এটি হ্যান্ডল করবে।
ExtJS এ কাস্টম ইভেন্ট ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের লজিক এবং ইউজার ইন্টারফেসের মধ্যে আরও ভালো সমন্বয় করতে পারেন, যা অ্যাপ্লিকেশনকে আরও কার্যকরী ও রক্ষণাবেক্ষণযোগ্য করে তোলে।
Event delegation এবং bubbling হচ্ছে দুইটি গুরুত্বপূর্ণ ধারণা যা ওয়েব ডেভেলপমেন্টে ইভেন্ট হ্যান্ডলিংয়ের সময় ব্যবহৃত হয়। ExtJS তে এই ধারণাগুলোর ব্যবহার কার্যকরী এবং অ্যাপ্লিকেশন ডেভেলপমেন্টের ক্ষেত্রে পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করতে সহায়তা করে।
Event Delegation হল একটি কৌশল, যেখানে একটি প্যারেন্ট কম্পোনেন্ট বা এলিমেন্টের ইভেন্ট হ্যান্ডলার একটি চাইল্ড এলিমেন্টের উপর কাজ করে। এটি মূলত ইভেন্ট হ্যান্ডলারকে প্যারেন্ট এলিমেন্টে অ্যাটাচ করে, এবং যখন চাইল্ড এলিমেন্টে কোনো ইভেন্ট ট্রিগার হয়, তখন প্যারেন্ট এলিমেন্ট সেই ইভেন্টটি ক্যাচ করে এবং সঠিক ইভেন্ট হ্যান্ডলার চালায়।
এই কৌশলের মূল সুবিধা হচ্ছে, আপনি একাধিক চাইল্ড এলিমেন্টের জন্য একাধিক ইভেন্ট হ্যান্ডলার না লিখে, একটি সিঙ্গেল ইভেন্ট হ্যান্ডলার দিয়ে সব চাইল্ড এলিমেন্টের ইভেন্ট হ্যান্ডল করতে পারেন। এটি কোডকে আরও কার্যকরী এবং স্কেলেবল করে তোলে।
ExtJS তে Event Delegation এর ব্যবহার:
Ext.define('MyApp.view.Main', {
extend: 'Ext.panel.Panel',
title: 'Event Delegation Example',
renderTo: Ext.getBody(),
items: [{
xtype: 'button',
text: 'Button 1',
itemId: 'button1'
}, {
xtype: 'button',
text: 'Button 2',
itemId: 'button2'
}],
listeners: {
render: function() {
this.el.on('click', function(e, target) {
// Event delegation: identify which button was clicked
if (target.id === 'button1') {
console.log('Button 1 clicked!');
} else if (target.id === 'button2') {
console.log('Button 2 clicked!');
}
});
}
}
});
ব্যাখ্যা:
this.el.on
ব্যবহার করে প্যানেলের রেন্ডার হওয়ার পর প্যানেলের সমস্ত এলিমেন্টে click
ইভেন্ট ডেলিগেট করা হয়েছে।target.id
যাচাই করে কোন বাটন ক্লিক হয়েছে তা শনাক্ত করা হয়েছে।Event Bubbling হল একটি কৌশল, যেখানে একটি ইভেন্ট একটি চাইল্ড এলিমেন্ট থেকে শুরু হয় এবং ধীরে ধীরে তার প্যারেন্ট এলিমেন্টগুলোর দিকে "বাবল" করে উঠে। অর্থাৎ, যখন কোনো ইভেন্ট কোনো চাইল্ড এলিমেন্টে ঘটে, তখন তা প্যারেন্ট এলিমেন্টগুলির মাধ্যমে উপরে উঠে আসে, যতক্ষণ না তা ডকুমেন্টের রুট (document root) পর্যন্ত পৌঁছায়।
ExtJS তে Event Bubbling এর ব্যবহার:
Ext.define('MyApp.view.Main', {
extend: 'Ext.panel.Panel',
title: 'Event Bubbling Example',
renderTo: Ext.getBody(),
items: [{
xtype: 'button',
text: 'Click Me!',
itemId: 'clickButton'
}],
listeners: {
render: function() {
// Bubbling: Catch the click event from child elements (like button)
this.el.on('click', function(e, target) {
console.log('Event bubbling triggered!');
});
}
}
});
ব্যাখ্যা:
this.el.on('click', ...)
ব্যবহার করা হয়েছে। এটি একটি উদাহরণ যেখানে প্যানেলটি ইভেন্ট বব্বলিংয়ের মাধ্যমে সমস্ত চাইল্ড এলিমেন্টের ক্লিক ইভেন্ট গ্রহণ করছে।ExtJS তে ইভেন্ট বব্বলিং বন্ধ করার জন্য আপনি stopEvent()
মেথড ব্যবহার করতে পারেন।
Ext.define('MyApp.view.Main', {
extend: 'Ext.panel.Panel',
title: 'Stop Event Bubbling Example',
renderTo: Ext.getBody(),
items: [{
xtype: 'button',
text: 'Click Me!',
itemId: 'clickButton'
}],
listeners: {
render: function() {
this.el.on('click', function(e, target) {
// Stop the bubbling of the event
e.stopEvent();
console.log('Bubbling stopped!');
});
}
}
});
ব্যাখ্যা:
e.stopEvent()
ব্যবহার করে ইভেন্ট বব্বলিং বন্ধ করা হচ্ছে, যাতে ইভেন্ট প্যারেন্ট এলিমেন্টে পৌঁছাতে না পারে।e.stopEvent()
দিয়ে ইভেন্ট বব্বলিং বন্ধ করা যায়, যা প্যারেন্ট এলিমেন্টে পৌঁছানোর আগেই ইভেন্টের প্রসেসিং থামিয়ে দেয়।এই ধারণাগুলি ব্যবহার করে, আপনি ExtJS অ্যাপ্লিকেশনকে আরও পারফরম্যান্ট এবং সহজে পরিচালনা করতে পারবেন।
Read more